<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <!-- 数对和 -->
    <script>
      /*
        思路：先对数组进行从小到大排序；
              初始时，左指针l = 0， 右指针r = nums.length - 1；
              判断左右指针元素加和是否为target，是则记录数据，然后二者同时向内收缩1；
              如果二者和大于target，则 r -= 1；
              如果二者和小于target，则l += 1，直至二者相交或重合。
      */
      var pairSums = function (nums, target) {
        nums.sort((a, b) => a - b)
        let l = 0,
          r = nums.length - 1
        let res = []
        while (l < r) {
          let t = target - nums[l]
          if (nums[r] === t) {
            res.push([nums[l], nums[r]])
            l += 1
            r -= 1
          } else if (nums[r] > t) {
            r -= 1
          } else {
            l += 1
          }
        }
        return res
      }
      console.log(pairSums([5, 6, 5], 11))
    </script>
  </body>
</html>
